<!DOCTYPE html>
<html lang="zh-CN">
	<head>
		<meta charset="UTF-8" />
		<meta name="viewport" content="width=device-width, initial-scale=1.0" />
		<title>ArrayBuffer，二进制数组</title>
	</head>
	<body>
		<!-- ArrayBuffer，二进制数组 -->

		<!--
		在JS中，基本的二进制对象是 ArrayBuffer ———— 对固定长度的连续内存的引用。

		ArrayBuffer 不是某种东西的数组。
		如要操作 ArrayBuffer 我们需要使用“视图”对象。
		视图对象本身并不存储任何东西。它是一副“眼镜”，透过它来解释存储在 ArrayBuffer 中的字节。

		ArrayBuffer 是核心对象，是所有的基础，是原始的二进制数据。
		-->

		<script>
			let buffer = new ArrayBuffer(16) // 创建一个长度为 16 的 buffer（也就是 16 字节，1字节 又等于 8bit）
			console.log(buffer.byteLength) // 16 （会分配一个 16 字节的连续内存空间，并用 0 进行预填充。）

			let view = new Uint32Array(buffer) // 将 buffer 视为一个 32 位整数的序列

			console.log(Uint32Array.BYTES_PER_ELEMENT) // 每个整数 4 个字节

			console.log(view.length) // 4 它存储了 4 整数
			console.log(view.byteLength) // 16 字节中的大小

			// 写入一个值
			view[0] = 123456

			// 遍历值
			for (const num of view) {
				console.log(num) // 0 0 0
			}
			//
		</script>
	</body>
</html>
